import java.util.*;

class Solution {
    public List<List<Integer>> generate(int numRows) {
        //定义一个二维数组
        List<List<Integer>> ret = new ArrayList<>();
        //第一行第一个为1
        List<Integer> list1 = new ArrayList<>();
        list1.add(1);
        ret.add(list1);
        for (int i = 1; i < numRows; i++) {
            //从第二行开始，第一个数和最后一个数都为一
            List<Integer> curRow = new ArrayList<>() ;
            curRow.add(1);
            //获取上一行
            List<Integer> prevRow = new ArrayList<>();
            prevRow = ret.get(i-1);
            //当前列的上一行 + 当前列-1的上一行
            for (int j = 1; j < i; j++) {
                int num = prevRow.get(j)+prevRow.get(j-1);
                curRow.add(j,num);
            }
            //从第二行开始，第一个数和最后一个数都为一
            curRow.add(1);
            //存
            ret.add(i,curRow);
        }
        //最后返回二维数组
            return ret;
    }
}